The present invention relates to bi-directional translators and more particularly to a bi-directional translator suitable for use in a system wherein a local word processor operating in a first code may selectively communicate over a telephone line with a remote word processor operating in the same code or a central processor unit operating in a second code.
Bi-directional translators are well known in the art. Some of these, as exemplified by U.S. Pat. Nos. 3,701,856 and 3,293,618 are capable of translating characters received in any one of a plurality of codes into characters in any other one of the plurality of codes. This is accomplished by addressing a memory with a character in one code to read out a translation of the character in a second code. However, some translators of the prior art have been unduly complex, requiring one or more memory address registers and one or more output buffer registers. Furthermore, some prior art translators have been wasteful of memory space in that each memory address has had two characters stored therein. In there translators one stored character represents the translation of the addressing character in a second code whereas the other stored character is the same as the addressing character, i.e. the same character in the same code. A selection is then made between the characters read out of memory depending upon whether the addressing character is to be transmitted with or without translation. Obviously in addition to wasting memory space, these translators require additional time to address the memory even though the addressing character is to be transmitted without translation.
In the UNIVAC* code the case of each character (upper case or lower case) is determined by the value of one bit in the character itself. On the other hand, in the IBM Correspondence Code two special case characters are provided, each case character determining the case of the character or characters following it. Furthermore, the UNIVAC* code includes characters for which there are no equivalent characters in the IBM Correspondence Code. These differences in the codes present special problems that are not solved by the translators of the prior art. For example, in translating from the UNIVAC* to the IBM Correspondence Code provision must be made for inserting a case character into the outgoing data stream each time the case of an incoming character is different from the case of the preceding outgoing character. When translating from the IBM Correspondence Code to the UNIVAC* code provision must be made for deleting the characters designating upper case and lower case from the outgoing data stream. Finally, it is desirable when translating from the UNIVAC* to IBM Correspondence Code to save as much time as possible by not transmitting a blank (Space character) if the character being translated has no equivalent in the IBM Correspondence Code.